查看原文
其他

我的Linux学习笔记·Linux操作系统基础

2017-03-19 阿现 生信媛

又是一个下雨天。

今天的笔记主要是关于Linux操作系统基础的相关知识。那就从我面前的电脑开始讲起。


计算机和操作系统


计算机主要包括五个部分:运算器,控制器,存储器,输入设备和输出设备。通常,运算器,控制器再加上其他一些部件如寄存器等构成了我们通常所说的CPU(central processing unit)存储器则主要是内存。运算器,控制器和存储器可以实现数据的处理.


但是数据从何而来,运算之后的结果去往哪里?

这就需要输入设备和输出设备(I/O设备)。我们通常用到的输入设备包括键盘鼠标等,输出设备为屏幕,打印机等。值得一提的是,计算机中有个叫做硬盘的东西,它并不是存储器,而是一个I/O设备。在将数据读取到内存时,它是一个输入设备;而将结果保存到磁盘时,它就变成了一个输出设备。


这么多设备整合在一起,就成了一台计算机。它可以接收我们的指令(键盘鼠标),通过运算(CPU),把结果展示给我们(屏幕,硬盘等)。


但是这么多硬件是如何协调作用,共同完成一个任务而不会我行我素地乱来呢?我们需要一个东西,它可以控制硬件有序地工作,各自执行自己的任务,这个东西就是操作系统Operating System)。

 

操作系统是一个特殊的软件,它的任务就是硬件管理控制CPU的运算,控制内存的分配,控制计算机的几乎一切。假如一台电脑没有操作系统,它可能只是一个艺术品,或者一堆废铁。

 

一个完整的操作系统包括内核和一些辅助软件。

内核的主要任务就是进行硬件管理,它是一个操作系统最基础最底层的东西。内核若想很好地控制硬件并使其发挥相应的功能,需要和硬件相识相知相爱,他俩可以成为完美的一对,全都仰仗于驱动的帮忙。驱动是硬件的灵魂,它向操作系统提供了访问和使用硬件的接口,以便在某项任务中最高效地调用硬件。


什么是Linux


Linux就是一个操作系统,它可以管理整个计算机硬件,并且可以接收我们的指令,来指挥硬件完成相应的任务,并把结果反馈给我们。Linux是由Linus Torvalds在1991年开发的,它稳定性高,配置要求低,而且免费。不同的发行商使用linux内核,对其进行软件和管理工具的封装,形成了不同的Linux发行版。不同发行版之间的差别并不是太大,根据发行商的不同,各种linux发行版也被分为多个系列:如红帽系列的RedHat, CentOs, Fedora; Debian系列的Ubuntu, Mint以及Suse系列等。



Shell:用户与内核之间的中介


操作系统除了要与硬件打交道,还要和我们人类打交道,毕竟电脑是为人民服务。而我们与系统之间的交互,仰仗于一个重要的软件—Shell


Shell是用户与内核之间的中介,我们可以把它当作一个命令解释器,我们输入某些命令,shell将它解释成内核可以理解的语言,从而使内核执行后续的相关操作。


Shell可以分为图形界面shellGraphicalUser Interface,GUI)和命令行shellCommand Line Interface,GLI)。我们常用的windows操作系统所用的WindowsExplorer就是图形界面的shell,而在linux中流行的bash则是命令行shell。当然,linux中也有图形界面的shell,如x-window等。后面我们会慢慢讲到Shell(bash)的一些特性。

Linux的根文件系统


Linux的基本哲学之一:“一切皆文件”。

不管是普通的文件,目录还是设备,在linux中都被当作文件并对其进行操作。而linux对这些文件进行管理则主要依赖于它的根文件系统(root file system)


Linux下的每一个文件都必须处于根文件系统下的某一路径,最底层的路径为root,我们用/来表示。/下可以延伸出其他路径,这个路径下可以有文件或者目录(目录也是一种特殊的文件)。Linux系统的一切都处于/下,为了方便的大家的管理和使用,Filesystem Hierarchy Standard (文件系统层次标准,FHS)应运而生。简单地讲,FHS定义了根下的某个特定目录必须放置特定类型文件,而不能随意更改。比如/boot下只能放置系统启动相关的文件,/etc下是系统主要的配置文件,而任何设备文件都在/dev目录下。

 

我们使用tree命令可以显示/目录下的各个子目录,以及子目录下的内容。比如我们进入到根目录,看看这个目录下有哪个写子目录,可以使用

Tree –L 1

 


我们会发现,根目录下有多个子目录,而这些子目录的名字以及目录下的文件都是被定义好的,下面是FHS系统的详细说明


/boot:系统启动相关文件,如内核、initrd,以及grub(bootloader)

/dev:设备文件。Linux下一切皆文件,设备也是以文件的形式存在于这个目录中,里面存放有如/dev/hd*,/dev/sd*等设备文件。

/etc:配置文件。如用户的账号文件/etc/passwd,密码文件:/etc/shadow等都存放在这个目录中。

/home:用户的家目录。用户登陆后默认处于自己的家目录中,常用~代表当前用户的家目录。

/root:管理员的家目录

/lib:库文件,主要放置开机时会用到的库。库文件可以分为静态库(*.a)和动态库(*.so)。库文件不能单独执行,只能被调用

/media:挂载点目录,通常用于挂载移动设备

/mnt:额外的临时文件系统,如光盘

/opt:可选目录,早期为第三方程序安装目录

/proc:伪文件系统,内核映射文件,为内核工作的统计数据等

      只有内核运行时才有文件,关机下为空的

/sys:伪文件系统,跟硬件设备相关的属性映射文件

/tmp:临时文件

/var:可变化文件

/binbinary,可执行文件,用户命令

/sbin:管理命令

/usruniversal shared read-only,全局共享只读文件

           /usr/bin

           /usr/sbin

           usr下的binsbin是与系统提供某些功能相关的命令

           根目录下的binsbin是和系统启动相关的命令


更详细的信息大家可以参照:

 

通过上面我们了解了什么是linux系统以及它的根文件系统,基本都是一些理论知识,但是个人觉得了解这些知识还是挺有必要的。后面,如果我们要想真正开始使用linux系统,首先还要学会一些基本的命令,如:


目录管理命令:mkdir, rmdir

文件管理命令:touch, rm, cp,mv

文本查看命令:cat, tac,more, less, head, tail

文本处理命令:cut, sort,uniq, wc, tr


以及一些其他常用命令如ls, cd,alias, history等。具体的使用可以参考我们之前的一些生信入门文章或者网上搜一下。


下周,我的笔记内容将会是bash的相关特性以及文件名通配等,会介绍相关的理论知识和命令等。欢迎大家多多交流,共同学习。

 

参考资料:

《鸟哥的linux私房菜》

《马哥linux


欢迎关注我们



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存